A synthesis of dryland restoration techniques.

Purpose

To quantitatively examine the efficacy of vegetation restoration in drylands globally.

Questions

  1. What is the global extent of research that directly examined restoration of drylands?
  2. What were the common measures?
  3. Is the restoration of vegetation a common and primary focus?
  4. How frequently does the restoration measure outcomes beyond the focal species?
  5. What were the primary restoration goals as reported by primary authors?
  6. How much variation was there in the techniques tested and how long were experiments monitored and tested?
  7. How relatively effective were the techniques?

Step 2. Sort

A summary of sort process using PRISMA.

library(PRISMAstatement)
prisma(found = 1504,
       found_other = 5,
       no_dupes = 1039, 
       screened = 1039, 
       screen_exclusions = 861, 
       full_text = 178,
       full_text_exclusions = 100, 
       qualitative = 78, 
       quantitative = 78,
       width = 800, height = 800)

Step 3. Synthesize

Check data and calculate necessary measures.

data <- read_csv("data/data.csv")
data <- data %>%
  mutate(lrr = log(mean.t/mean.c), rii = ((mean.t-mean.c)/(mean.t + mean.c)), var.es = ((sd.t^2/n.t*mean.t^2) + (sd.c^2/n.c*mean.c^2)))
#data

#consider adding some other effect size measures and/or study-level data too

Step 4. Summarize

Explore summary level data of all data. Explore aggregation levels that support the most reasonable data structure and minimize non-independence issues.

#evidence map####
require(maps)
world<-map_data("world")
map<-ggplot() + geom_polygon(data=world, fill="gray50", aes(x=long, y=lat, group=group))
map + geom_point(data=data, aes(x=long, y=lat)) +
  labs(x = "longitude", y = "latitude") #render a literal map, i.e. evidence map, of where we study the niche in deserts globally

#add in levels and color code points on map####
map + geom_point(data=data, aes(x=long, y=lat, color = paradigm)) + 
  scale_color_brewer(palette = "Paired") +
  labs(x = "longitude", y = "latitude", color = "")

#aggregation####
se <- function(x){
  sd(x)/sqrt(length(x))
}

data.simple <- data %>%
  group_by(study.ID, paradigm, technique, measure.success) %>%
  summarise(n = n(), mean.lrr = mean(lrr), mean.rii = mean(rii), mean.var = mean(var.es))

main.data <- data %>%
  group_by(study.ID, paradigm, intervention, outcome) %>%
  summarise(n = n(), mean.lrr = mean(lrr), mean.rii = mean(rii), mean.var = mean(var.es))


#EDA data####
simple.data <- data %>% group_by(study.ID, paradigm, technique, measure.success) %>% summarise(mean.rii = mean(rii), error = se(rii))
simple.data <- na.omit(simple.data)

parad.data <- data %>% group_by(study.ID, paradigm) %>% summarise(mean.rii = mean(rii), error = se(rii))
parad.data <- na.omit(parad.data)

tech.data <- data %>% group_by(study.ID, technique) %>% summarise(mean.rii = mean(rii), error = se(rii))
tech.data <- na.omit(tech.data)

success.data <- data %>% group_by(study.ID, measure.success) %>% summarise(mean.rii = mean(rii), error = se(rii))
success.data <- na.omit(success.data)

#active
active <- data %>%
  filter(paradigm == "active")

#viz for aggregation####
ggplot(na.omit(data.simple), aes(technique, n, fill = paradigm)) + 
  geom_bar(stat = "identity") + 
  coord_flip() + 
  scale_fill_brewer(palette = "Paired")

ggplot(na.omit(data.simple), aes(measure.success, n, fill = paradigm)) + 
  geom_bar(stat = "identity") + 
  coord_flip() + 
  scale_fill_brewer(palette = "Paired")

#better
ggplot(main.data, aes(intervention, n, fill = paradigm)) + 
  geom_bar(stat = "identity") + 
  coord_flip() + 
  scale_fill_brewer(palette = "Paired") +
  labs(fill = "")

ggplot(main.data, aes(outcome, n, fill = paradigm)) + 
  geom_bar(stat = "identity") + 
  coord_flip() + 
  scale_fill_brewer(palette = "Paired") +
  labs(fill = "")

Step 5a. EDA

Exploratory data analyses to understand data and QA/QC using Rii.

Step 5b. Models

Meta and conventional statistical models to explore relative efficacy.

Step 5. Synthesis stats

#p-value meta
library(metap)
mdata <- data %>%
  filter(paradigm == "active") %>%
  filter(!is.na(lrr)) %>%
  filter(!is.na(var.es)) %>%
  filter(!is.na(n.t)) %>%
  filter(!is.na(p)) %>%
  filter(!is.na(intervention))

schweder(mdata$p)

sumz(p, data = mdata)
## sumz =  54.34943 p =  0
mdata %>%
  split(.$intervention) %>%
  purrr::map(~sumz(.$p)) 
## $`carbon amendment`
## sumz =  12.80103 p =  8.089988e-38 
## 
## $`mycorrhizal inoculation`
## sumz =  10.1732 p =  1.305983e-24 
## 
## $nutrients
## sumz =  11.64501 p =  1.216527e-31 
## 
## $planting
## sumz =  37.82107 p =  0 
## 
## $seeding
## sumz =  29.95991 p =  1.634345e-197 
## 
## $vegetation
## sumz =  4.907664 p =  4.608382e-07 
## 
## $`water addition`
## sumz =  14.21274 p =  3.818713e-46
sumlog(mdata$p)
## chisq =  6941.488  with df =  2474  p =  0
#effect-size meta
library(meta)
m <- metagen(lrr, var.es, studlab = ID, byvar = intervention, data = mdata)
summary(m)
## Number of studies combined: k = 1171
## 
##                         95%-CI  z p-value
## Fixed effect model   NA        --      --
## Random effects model NA        --      --
## 
## Quantifying heterogeneity:
## tau^2 = 0; H = 1.00 [1.00; 1.00]; I^2 = 0.0% [0.0%; 0.0%]
## 
## Test of heterogeneity:
##     Q d.f. p-value
##  0.00 1170  1.0000
## 
## Results for subgroups (fixed effect model):
##                                          k                     95%-CI
## intervention = seeding                 360      NA                   
## intervention = planting                546      NA                   
## intervention = vegetation               11    -Inf [   -Inf;    -Inf]
## intervention = nutrients                72 -0.0223 [-0.0717;  0.0272]
## intervention = carbon amendment         70 -1.2791 [-1.2845; -1.2738]
## intervention = mycorrhizal inoculation  30  0.7241 [ 0.7239;  0.7243]
## intervention = water addition           82      NA                   
##                                                 Q  tau^2    I^2
## intervention = seeding                       0.00      0   0.0%
## intervention = planting                      0.00      0   0.0%
## intervention = vegetation                     Inf    Inf     --
## intervention = nutrients                    10.53      0   0.0%
## intervention = carbon amendment           1618.90 0.0305  95.7%
## intervention = mycorrhizal inoculation 2078953.52 0.0464 100.0%
## intervention = water addition                0.00      0   0.0%
## 
## Test for subgroup differences (fixed effect model):
##                  Q d.f. p-value
## Between groups Inf    6       0
## Within groups  Inf 1164       0
## 
## Results for subgroups (random effects model):
##                                          k                     95%-CI
## intervention = seeding                 360      NA                   
## intervention = planting                546      NA                   
## intervention = vegetation               11      NA                   
## intervention = nutrients                72 -0.0223 [-0.0717;  0.0272]
## intervention = carbon amendment         70 -1.4672 [-1.6147; -1.3198]
## intervention = mycorrhizal inoculation  30  0.8426 [ 0.7533;  0.9319]
## intervention = water addition           82      NA                   
##                                                 Q  tau^2    I^2
## intervention = seeding                       0.00      0   0.0%
## intervention = planting                      0.00      0   0.0%
## intervention = vegetation                     Inf    Inf     --
## intervention = nutrients                    10.53      0   0.0%
## intervention = carbon amendment           1618.90 0.0305  95.7%
## intervention = mycorrhizal inoculation 2078953.52 0.0464 100.0%
## intervention = water addition                0.00      0   0.0%
## 
## Test for subgroup differences (random effects model):
##                       Q d.f.  p-value
## Between groups   717.61    6 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2